/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.edu.unicen.twitter.suggest.backend.datasources;

import ar.edu.unicen.twitter.suggest.backend.dtos.TweetApi;
import ar.edu.unicen.twitter.suggest.backend.dtos.UsuarioApi;
import ar.edu.unicen.twitter.suggest.backend.dtos.UsuarioBasico;
import ar.edu.unicen.twitter.suggest.backend.dtos.UsuarioProxy;
import ar.edu.unicen.twitter.suggest.commons.dtos.Usuario;
import ar.edu.unicen.twitter.suggest.interfaces.exceptions.RejectedException;
import ar.edu.unicen.twitter.suggest.interfaces.exceptions.TwitterException;
import ar.edu.unicen.twitter.suggest.interfaces.exceptions.UserNotFoundException;
import ar.edu.unicen.twitter.suggest.interfaces.exceptions.UserProtectedException;
import java.util.List;

/**
 *
 * @author Alex
 */
public interface TwitterFacade {

    List<TweetApi> getAllTweets(String screenName, int page) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    long[] getFollowersFirsts(String screenName) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    long[] getFollowers(String screenName, int count) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    long[] getFollowsFirsts(String screenName) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    long[] getFollows(String screenName, int count) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    List<TweetApi> getNewTweets(String screenName) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    Usuario getUser(long id) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;
    
    Usuario getUser(String screenName) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;
    
    UsuarioBasico getUserData(Long id) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    UsuarioBasico getUserData(String screenName) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    List<Usuario> getUserList(long[] ids) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    UsuarioApi getUserApi(long id) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;
    
    UsuarioApi getUserApi(String name) throws UserNotFoundException,UserProtectedException, RejectedException,TwitterException;

    void update(UsuarioApi u);
    
     public int getMaxLinks();

    public void setMaxLinks(int maxLinks);
    
}
